// 工具函数：处理视频相关数据
export const videoDataFormatter = {
	/**
	 * 1. RunTimeTicks（时间戳）转可视化时长（格式：HH:MM:SS 或 MM:SS）
	 * 假设 RunTimeTicks 单位为「100纳秒」（常见于Windows系统时间戳，若单位不同需调整系数）
	 * 换算逻辑：1秒 = 10^7 个100纳秒（1秒 = 1000毫秒 = 1000*1000微秒 = 1000*1000*1000纳秒 = 10^10纳秒 = 10^7个100纳秒）
	 */
	formatRunTime(ticks) {
		if (!ticks || ticks <= 0) return "00:00";

		// 1. 转换ticks为总秒数（根据实际ticks单位调整系数，此处以100纳秒为例）
		const totalSeconds = Math.floor(ticks / 10000000); // 10^7 = 1秒

		// 2. 拆分小时、分钟、秒
		const hours = Math.floor(totalSeconds / 3600);
		const minutes = Math.floor((totalSeconds % 3600) / 60);
		const seconds = totalSeconds % 60;

		// 3. 格式化（补0，无小时则隐藏）
		const pad = (num) => num.toString().padStart(2, "0");
		return hours > 0 ?
			`${pad(hours)}:${pad(minutes)}:${pad(seconds)}` :
			`${pad(minutes)}:${pad(seconds)}`;
	},

	/**
	 * 2. Size（字节）转可视化视频大小（格式：B/KB/MB/GB，保留1位小数）
	 */
	formatVideoSize(bytes) {
		if (!bytes || bytes <= 0) return "0 B";

		const units = ["B", "KB", "MB", "GB"];
		const k = 1024;
		const i = Math.floor(Math.log(bytes) / Math.log(k)); // 计算单位层级

		// 格式化数值（保留1位小数，避免0.0的情况）
		const size = (bytes / Math.pow(k, i)).toFixed(1);
		return `${size === "0.0" ? "0" : size} ${units[i]}`;
	},

	/**
	 * 3. Width/Height 转可视化分辨率（格式：宽×高，补充常见分辨率标识）
	 */
	formatResolution(width, height) {
		if (!width || !height || width <= 0 || height <= 0) return "";

		// 基础分辨率格式
		const baseRes = `${width}×${height}`;

		// 补充常见分辨率标识（可选，提升可读性）
		const resMap = {
			"720×1280": "720P", // 对应示例数据
			"1280×720": "720P",
			"1920×1080": "1080P",
			"2560×1440": "2K",
			"3840×2160": "4K"
		};

		return resMap[baseRes] || baseRes;
	},
	// 时间格式化工具函数
	formatDate(isoTime, format) {
		// console.log("格式化时间"+isoTime)
		if (!isoTime) return '';

		const date = new Date(isoTime);
		if (isNaN(date.getTime())) return isoTime;

		const year = date.getFullYear();
		const month = String(date.getMonth() + 1).padStart(2, '0');
		const day = String(date.getDate()).padStart(2, '0');
		const hours = String(date.getHours()).padStart(2, '0');
		const minutes = String(date.getMinutes()).padStart(2, '0');

		return format
			.replace('YYYY', year)
			.replace('MM', month)
			.replace('DD', day)
			.replace('HH', hours)
			.replace('MM', minutes);
	}
};